Configurable framework for storing and retrieving arbitrary information from a database

ABSTRACT

A system, apparatus and method are provided that enable the receipt of answers to questions from users and to make those answers persistent within a generalized database schema. A set of one or more middleware entities and components are provided to process the user&#39;s answers that are submitted to the system. The middleware entities differentiate one user from another user by use of a session. Different sets of questions are grouped into encounters, and the answers to the questions for a particular encounter are given a unique identifier. The unique identifier can be used to identify the user and/or the particular encounter. The answers to the questions can be retrieved and viewed in numerous ways, such as by user, by encounter, by question, by question type, by answer, by answer type, etc. The selection of database schema and the structure of the middleware enables the system to handle any answer to any question without requiring the restructuring of the database or database schema.

BACKGROUND OF THE INVENTION TECHNOLOGY

1. Field of the Invention

The present invention is related to databases. More particularly, thepresent invention is related to a system and method for storing ad-hocinformation within a single database table without compromising thedisparity and type of information provided by the user.

2. Description of the Related Art

The advent of the Internet, particularly the World Wide Web (“WWW”),heralded the advent of ubiquitous technologies that link people andinformation. With the proliferation of dynamically generated hypertextmarkup language (“HTML”) by application servers and other webtechnologies, many types of user interaction problems, such as thoseencountered with traditional client-server applications, were solved.

Many web-based software applications utilize a web server in conjunctionwith a relational database and intermediate software (“middleware”) thatretrieves the information from the database and places it into a formneeded by the web server to generate the response to the user. Userstypically access the web-based application by entering a universalresource locator (“URL”) into their web browser, and send the request tothe web server. The web server satisfies the request in one of twogeneral ways: return a static web page; or generate a dynamic web page.Dynamic page generation typically requires access to a relationaldatabase. The relational database contains information that is stored inone or more fields (columns) about specific instances (rows) within atable. One or more rows are typically retrieved in a database requestthat is issued by the web server. The information from the database'sresponse is used to generate the dynamic web page. Consequently, mostmoderate and large web applications can be broken down into threefundamental components:

-   -   1. The view and its support utilities, i.e. the front-end or        user-interface, is typically a set of web pages generated by        JavaServer Pages (“JSP's”), common gateway interface (“CGI”)        code or Application Server Pages (“ASP's”) that are presented to        the client or other applications by a suitable server that is a        consumer of middleware functionality. Java Server Pages        technology can be obtained from Sun Microsystems of Santa Clara,        Calif. Application Server Page technology is available from the        Microsoft Corporation of Redmond, Wash.    -   2. Middleware is the application code that encapsulates the        systems business logic. Middleware is also responsible for        persisting and retrieving data from a persistence store.    -   3. A persistence layer is responsible for long-term storage of        application and user data. Typically the persistence layer        consists of a database but could also be as simple as a file        system.

In the case of a presenting a series of new questions via a webapplication using a database and typical middleware, the databasedeveloper must create table space to capture the answers for eachquestion. Table space creation could have been as simple as modifyingexisting tables to accept extra fields, or as complicated as creatingnew tables and integrating them into the existing schema's integrity,constraints. For the middleware, the system architect and the developermust design and implement components that enforce business logic for thenew types of data. Furthermore, new methods must be exposed to the viewand the new components must be integrated into the persistence process.

While changes to web-based applications are easier to implement thanclient-server applications, web-based content for software applicationsis still typically hard coded and therefore requires complete rewritesof the front end (user-interface) when significant changes are made tothe middleware and database. Similarly, even minor changes to the typeof information gathered via the user-interface can require significantmodification of database schema used to support the web-baseduser-interface. Such modifications are expensive, both in terms of moneyand in time. Modifications are expensive because once the structure(schema) of the database is set, it is difficult to modify without causesignificant “ripple” effects in both the middleware and the userinterface and vise-versa.

The Extensible Markup Language (“XML”) is a processing standard proposedby the World Wide Web Consortium (“W3C”), the same group responsible foroverseeing the HTML standard. XML is expected to replace HTML as themarkup language of choice for dynamically generated content, includingnon-static web pages. XML is a meta-language that enables the creationand formatting of arbitrary document markups called elements. Each ofthe elements can be defined through a document type definition and/or astylesheet and applied to one or more XML documents. Elements within XMLcan contain other elements. Elements that are embedded within otherelements can be described in a hierarchical manner (i.e., parent-childrelationships between elements). XML documents are typically stored on astandard file system.

In the prior art, which is exemplified by the book “Professional XMLDatabases” by Kevin Williams, et al (Wrox, December 2000), thehierarchical structure of elements within an XML document do not lendthemselves to storage within a relational database. Properadministration of relational databases require the “normalization” ofthe information, and the sequestering of unique types of informationinto specific columns within the database tables. For example, a fieldcould contain a person's last name, and such a field may be called“last_name.” It would be improper to place the person's first namewithin the last_name field because it would diminish the value of thedatabase if the end-users of the database had to consider or filterfirst names from the last name field. Consequently, when a differenttype of information is needed, a new field within one of the databasetables must be created, and that field must be linked to the userinterface with changes to the middleware and/or user-interface. Suchchanges are, as mentioned above, expensive both in terms of time and interms of out-of-pocket expenses. There is, therefore, a need in the artfor a system and method that enables a web-based (or other)user-interface to be modified to accommodate new or ad-hoc informationwithout requiring modification to the middleware or to the databasetables or to the underlying database schema.

SUMMARY OF THE INVENTION

The present invention remedies the shortcomings of the prior art byproviding a system and method for storing information within arelational database that enables the capture and storage of ad-hocinformation without requiring a restructuring of the database tables.

The system of the present invention includes a set of one or morecomponents that contain one or more entities, each of the entities maycontain zero or more properties and methods. The components, entities,methods and properties are constructed and arranged onto an informationhandling system to service requests from a user that interacts with thesystem through a system client.

The present invention can be implemented as a data storage apparatus onan information handling system that includes: one or more nodes entitiesor components; one or more tree root entities or components thatreference the nodes entities; and one or more parent-child link entitiesthat are linked to the nodes entities; wherein the entities orcomponents store a set of information that has elements related to otherelements within the set. Alternatively, the present invention can be adata storage apparatus that is implemented on an information handlingsystem that includes: one or more question nodes entities or components;one or more tree roots entities or components that reference thequestion nodes entities or components; one or more parent-child linkentities or components that are linked to the nodes entities/components;and one or more question answer entities or components that map with thequestion nodes object or component, wherein the entities and/orcomponents store a set of information having elements that are relatedto other elements within the set.

Alternatively, the present invention can be a data storage apparatusthat is implemented on an information handling system including: one ormore question nodes entities; one or more tree roots entities thatreference the question nodes entities; one or more Parent-child linkentities linked to the nodes entities; one or more question answerentities that map with the question nodes object; and one or more useranswer entities that are associated with the question nodes object;wherein the various entities store a set of information having elementsrelated to other elements within the set.

BRIEF DESCRIPTION OF THE DRAWINGS

A more complete understanding of the present disclosure and advantagesthereof may be acquired by referring to the following description takenin conjunction with the accompanying drawings wherein:

FIG. 1 is a schematic diagram illustrating an information handlingsystem according to the teachings of the present invention.

FIG. 2 is an entity relationship diagram illustrating the basic datastructure according to the teachings of the present invention.

FIG. 3 is an entity relationship diagram illustrating an alternateembodiment of the data structure according to the teachings of thepresent invention.

FIG. 4 is a block diagram illustrating another alternate embodiment ofthe data structure according to the teachings of the present invention.

FIG. 5 is a block diagram illustrating selection types according to theteachings of the present invention.

FIG. 6 is a block diagram illustrating an answer submissionimplementation according to the teachings of the present invention.

FIG. 7 is a block diagram illustrating a question retrievalimplementation according to the teachings of the present invention.

The present invention may be susceptible to various modifications andalternative forms. Specific embodiments of the present invention areshown by way of example in the drawings and are described herein indetail. It should be understood, however, that the description set forthherein of specific embodiments is not intended to limit the presentinvention to the particular forms disclosed. Rather, all modifications,alternatives and equivalents falling within the spirit and scope of theinvention, as defined by the appended claims, are to be covered.

DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS

The present invention is directed to a system and method for storingad-hoc information on a computer system without requiring themodification of the underlying application schema, database, and/ormiddleware.

Information Handling System

FIG. 1 illustrates an information handling system that is capable ofimplementing the entities, properties, methods, signals, messages andcomponents of the present invention. Referring to FIG. 1, theinformation handling system is illustrated having electronic componentsmounted on at least one printed circuit board (PCB) (motherboard) andfacilitating the communication of data and control signals over signalbuses. In one embodiment, the information handling system is a computersystem. The information handling system, generally referenced by thenumeral 100, comprises one or more processors 110 coupled to a host bus120. A north bridge 140, which may also be referred to as a memorycontroller hub or a memory controller, is coupled to a main systemmemory 150. The north bridge 140 is coupled to the system processor 110via the host bus 120. A basic input/output system (BIOS) 112 comprisesfirmware used during start-up of the information handling system 100,and for system hardware housekeeping functions. The BIOS 112 may be anynon-volatile memory, e.g., electronically erasable read only memory(EEPROM) or FLASH memory.

The north bridge 140 may be generally considered an application specificchip set that provides connectivity to various buses, and integratesother system functions such as a memory interface. For example, an Intel120E and/or 115E chip set, available from the Intel Corporation of SantaClara, Calif., provides at least a portion of the north bridge 140. Thechip set may also be packaged as an application specific integratedcircuit (“ASIC”). The north bridge 140 typically includes functionalityto couple the main system memory 150 to other devices within theinformation handling system 100. Thus, memory controller functions suchas main memory control functions typically reside in the north bridge140. In addition, the north bridge 140 provides bus control to handletransfers between the host bus 120 and a second bus(es), e.g., PCI bus170, and an AGP bus 171 coupled to a AGP graphics interface 172 whichdrives a video display 174 via a signal transmission mechanism, such ascable 176.

The PCI bus 170 couples at least one PCI device, e.g., compliant withthe PCI Bus Power Management Interface Specification, to the northbridge 140. A second bus(es) 168 may also comprise other industrystandard buses or proprietary buses, e.g., ISA, SCSI, USB buses througha south bridge (bus interface) 162. These secondary buses 168 may havetheir own interfaces and controllers, e.g., ATA disk controller 160 andinput/output interface(s) (not shown).

Organization of Information

The present invention stores information in a data structure thatfacilitates the operation of the present invention. In its simplestembodiment, the present invention stores data in three types of entitiesand relationships as shown in the entity relationship diagram of FIG. 2.The entities of FIGS. 2 and 3 can be implemented as tables in arelational database, with each table having columns representing theattributes of the entity, and rows representing various instances of theentities. For the present invention, an entity is something about whichwe wish to keep information, so entities typically have one or moreattributes that contain aspect information about the thing beingrepresented by the entity. This information can be made persistentthrough the use of a database. Relationships between the data tables aretypically represented by references 215 or links 225 as shown in FIG. 2.The relationships can consist of keys, such as primary keys and foreignkeys, or some other relationship mechanism that is available on thedatabase used to implement the present invention.

Central to the data schema 200 is the nodes entity 220. Occurrences ofthe nodes entity 220 (e.g., rows of the data table) contain a preferablyunique identifier (Nodes_ID) and one or more attributes (Node_Attribute)that can be used to store information and information-types that tailorthe specific occurrence of the nodes entity 220 to a particular problem.One or more occurrences of the tree root entity 210 can reference 215 aparticular occurrence of the node entity 220 of the database via, forexample, the node identifier (Node_ID) that exists in both entities.

The present invention can use a variety of databases, includingrelational databases (where entities are represented as a row in aparticular table or rows in a set of tables), object databases (wherethe entities are represented directly), object-relational databases(where the entities are typically mapped to a relational database), orother types of databases that can have constituent elements berepresented by software objects, tables, structures, or similar models.If a relational database is used to persist the data, then the nodeidentifier (Node_ID) of the tree root entity 210 would be a foreign key(as noted by the designation “FK” in FIG. 2). Moreover, parent-childrelationships between occurrences of the node entity 220 and occurrencesof the tree root entity 210 can be identified by the use of occurrencesof the parent-child link entity 230 through links 225 to the node entity220 as illustrated in FIG. 2. The parent-child link entities 230 providethe relationships between the various occurrences of the nodes entity220 and the various occurrences of the tree root entity 210. However, itis often preferable for each occurrence of the tree root entity 210(such as a row in a table within the relational database) to contain anexplicit identifier for the top (root) node occurrence so that theparticular occurrence of the tree root does not require the use of alinking entity such as the parent-child link entity 230. If needed,however, occurrences of the parent-child link entity 230 may contain theidentifiers of the various occurrences of the tree roots entity 210 andthe occurrences of the nodes entity 220 via, for example,variables/parameters such as “Child_ID.Node_ID” and “Parent_ID.Node_ID”as illustrated in FIG. 2. Alternatively, if an object database is used,the object databases standard facility for handling relationships can beused, thereby eliminating the need for the parent-child link entity 230.

Both the occurrences of the nodes entity 220 and their associatedoccurrences of the tree roots entity 210 can be equipped to handle oneor more attributes that enable the end-user or developer to tailor thetables of the database to real-world problems. Thus, the nodes entity220 and the tree roots entity 210 can be structured with specificattributes for the real-world problem at hand. The embodiment of thepresent invention illustrated in FIG. 2 is useful for storinginformation, such as questions, within the nodes entities and/or thetree roots entities. Typically, the question for the user would becontained within the nodes object, although there are alternativearrangements of the information. For example, the questions can becontained within the tree roots object instances and can be associatedwith a particular category with the category information being storedwithin a Nodes object instance. Although discouraged, the specific treeroots entity 210 can be associated with one or more entries within nodesentity 220 when, for example, the question involved is applicable to oneor more categories.

An alternate embodiment of the data storage mechanism of the presentinvention is illustrated in FIG. 3. FIG. 3 is very similar to FIG. 2,except that the database schema 300 of FIG. 3 has the addition of aquestion-answer map entity 340. As with the typical embodiment of FIG.2, the question nodes object 320 is typically used to store a questionor some other “centralized” piece of information to which other piecesof information are associated. As illustrated in FIG. 3, the questionnodes 320 are associated 335 with one or more entries within thequestion-answer map entity 340. The question-answer map entity 340 has,for example, a preferably unique identifier (Selection_ID), and aparameter (SelectionType) that identifies the type of question and/oranswer involved. Finally, the question-answer map entity 340 has aparameter to identify the question nodes entity 320 to which the formerrefers. As with the database 200 of FIG. 2, the database of FIG. 3 canhave one or more entries within the tree roots entity 310 that reference315 one or more entries in the question nodes entity 320. Similarly, oneor more entries in the parent-child link entity 330 can be linked 325 toentries within the question node entity 320 in order to identify parentchild relationships.

The advantages of the present invention can be illustrated with thefollowing example. In this example, a patient will be asked a series ofquestions about their health, and in particular, their eyes. Already onecan say that whatever questions are asked belong to the set of questionsrelated to eyes, such as an eye exam. The process of questioning thepatient is called an encounter. “Eye Exam” could be the name of theencounter and one of the entries for the tree roots table 310 for thatencounter could be called “Eye Pain.” For example, “Eye Pain” could bethe value of the attributes (Tree_Attribute) for the entry of theTreeRoots table 310. The first question that is posed to the patient isfrom an entry in the QuestionNodes entity 320 (the question nodereferenced by this instance of the TreeRoots entity 310) is: “Does youeye hurt?” The next question that is posed to the patient is found bylooking through all of the ParentChildLink entities 330 to find theentries that contain a reference to the question that was just asked asa parent of the parent-child pair. It is possible to find one or moreentries that satisfy the condition, and they would reference anotherquestion node as a child (of the parent-child pair) which, when found inthe entity where the question nodes are stored, has the question text“Which eye?” Thereafter, the ParentChildLink entity 330 is checked againfor instances referencing this (most recent) question as a parent and soon.

Encounters are logical collections of TreeRoot entities 310. TreeRootsentities 310 are logical collections of questions organized as treeswith a single top level question contained by the actual TreeRootinstance within the TreeRoot entity 310. Questions are logicalcollections of selections which are linked to their questions by theQuestionAnswerMap entity 340 in a similar manner as the ParentChildLinkentity 330. The QuestionAnswerMap entity 340 is important for decouplingthe questions from their selections. The QuestionAnswerMap entity 340 isa lookup entity that is similar to the ParentChildLink eneity 330.However, in this scenario, two parameters are needed to uniquelyassociate a selection with a question. The selection type essentiallyspecifies a location or an address where the particular selections canbe found. The Selection_ID identifier uniquely identifies a selection atthe location/address specified. In the simplest case, the type could bea table name and the identifier would be a primary key. In this way, theselections offered to the end user could be varied widely in source andtype without affecting the basic framework of the present invention,i.e., the questions themselves. As an example, one could offer the usermultimedia as part of a selection's attributes by simply addingassociated records to the QuetionAnswerMap entity 340 that links theappropriate question to a source of images, sound files, movies, and thelike. Moreover, UserSelection entity 460 of FIG. 4 (see descriptionbelow) makes use of the same mechanism to associate a user's chosenselections to the answer of a particular question.

Yet another alternate embodiment of the present invention is illustratedin FIG. 4. The alternate embodiment 400 of FIG. 4 has all of theelements of the database 300 of FIG. 3. However, the database 400 hasadditional elements as illustrated in FIG. 4. For example, threeadditional entities are included in the database 400. This embodiment ofthe present invention illustrates the use of the database 400 as amechanism for persisting answers to questions. The questions arepreferably stored separately in rows within the question nodes entity420. For this purpose, the rows of the question nodes entity 420 have a(preferably) unique identifier (QuestionNodes_ID) and one or moreattributes that are used to specify and/or display the question to auser (Node_Attributes). The user's answer/response is stored in a useranswer entity 450 as illustrated in FIG. 4. The database 400 can containa multitude of rows (entries) within the user answer entity 450 as wellas a plurality of rows within the tree roots entity 410 that can be usedto store the questions, question segments, or other types of informationregarding the structure of the question, or the question's place withina form of questions. Preferably, the questions can be stored in thequestion nodes entity 420 and the UserAnswer entity 450 can referencethe particular entry within the question nodes entity 420 by use of thequestion nodes identifier that would be a foreign key (if a relationaldatabase were employed).

Still other entities can be added to the database mechanism of thepresent invention as illustrated in FIG. 4. For example, an entity thatcan contain selections to answer the questions by the user (userselection entity 460) can be linked 455 to a particular user answerentity 450. Similarly, an entity that stores information about theuser's experience in a question/answer session or sessions can be storedas an entry in a user encounter entity 470 with one or more answerentries associated 465 with a user encounter entity 470.

FIG. 5 illustrates examples 500 of entities that can be used to denotethe type of selection (response) that a user can make to a question.Selection type A entity 502, selection type B entity 504, selection typeC entity 506 are generic entities that can satisfy the selections forusers. Typically, one selection-type entity is used for each selectionavailable to the user, although a generic entity could be used thatsatisfies the various requirements of the different types. Examples ofspecific selection-type entities are the copy answer selection entity508 and the user defined selection entity 510. Each of theselection-type entities can be constructed and arranged with anidentifier (such as Selection_ID or PK_CopyAnswerSelection). Similarly,the selection-type entity can be identified with a particular questionby use of, for example, a PK_Question parameter as in the copy answerselection entity 508. Other information can also be retained within theselection-type entity, such as a description of the selection(Description), the character string containing the particular answerselection (AnswerString), and an identifier denoting the particular setof answers string (SelectionListName) that the particular answer stringis associated. As with all other entities associated with the presentinvention, other parameters/properties/variables may also be includedwithin various selection-type entities for use with the presentinvention. The entities described above can thus be used within one ormore databases wherein the entities store a set of information, and theset of information has elements of information that are related to otherelements within the set of information.

All of the databases 200, 300, and 400 of FIGS. 2, 3, and 4,respectively, can be implemented on the information processing system100 of FIG. 1. Similarly, the information processing system of FIG. 1can be configured in innumerable ways to accommodate the problems thatmay be solved with the present invention. For example, multipleprocessors 110 may be used, or the information system 100 may be linkedor clustered with other like or similar systems to increase processingcapacity and/or storage. In addition, the information system 100 thatimplements the database 200, 300, 400 of the present invention may belinked to a network, such as a local area network and/or a wide areanetworks, e.g. the Internet. The information handling system 100therefore can be of any configuration that supports the processing andbandwidth needs of the users accessing the database 200, 300, 400.

Operation of the Present Invention

While the present invention is well suited to handling the persistenceand dissemination of question/answer forms on a web-based system andother systems. Moreover, the invention is also useful for otherapplications, particularly where one initial set of information needs tobe linked or associated with other sets of information in a persistentmanner. The following is a description of one implementation of thepresent invention.

This implementation of the present invention has two principal aspects:question and answer. The purpose of this particular implementation isthe storage and retrieval of user's answers to questions that are posedvia a web-based application. FIG. 6 illustrates the answer submissionimplementation. FIG. 7 illustrates the question retrievalimplementation. Both of the implementations can be implemented on theinformation handling system of FIG. 1 using entities and componentsderived from the entities and components illustrated in FIGS. 2-5.

Referring to FIG. 6, the answer implementation 600 uses an answersubsystem facade component 602 that can receive signals from a systemclient 610. In this scenario, the user is answering a set of questionsassociated with a given “encounter.” The encounter is typicallyassociated with a particular category or subset of questions. The system600 enables the users to answer sets of one or more questions that arerelated to a particular encounter. One or more users can answer thequestions associated with a given encounter, and one user can answerquestions related to one or more encounters.

The system client 610 is typically (although not always) a personalcomputer (not shown) that is connected via a network such as theInternet to the information handling system 100. The answer subsystemfacade component 602 is used as an intermediary between the systemclient (user) 610 and the present invention. The subsystem facadecomponent 602 is used to simplify the user's interaction with thepresent invention. The answer subsystem facade 602 intercepts andforwards to the relevant sub-components, all of the requests pertainingto answer persistence from the system client 610. Typically, the systemclient 610 sends a register-user signal 612 to the answer subsystemfacade 602 in order to begin a session that will wrap the systemclient's 610 answers into the proposed encounter's set of questions. Theanswer subsystem facade component 602 will, in turn, invoke a create newuser session method 614 of the user encounter manager component 604 thatcauses the latter to create an entry in a user encounter database table628 within the database 630 that uniquely identifies the user's set ofanswers to the given encounter. In this embodiment of the presentinvention, the user encounter manager 604 is a component that isresponsible for maintaining the integrity of the system client's 610answers for a given encounter. The user encounter manager 604 associatesa preferably unique identifier for the system client's 610 interactionwith the system 600 to ensure separation of the user's answers from theanswers of other users and the ability to differentiate therefrom.

Once the user's session has been initiated, the user (through the systemclient 610) may start submitting answers to the system 600. The systemclient 610 invokes a submit answer method 616 of the answer subsystemfacade component 602. The submit answer method 616 is the main methodthat a system client 610 calls to submit an answer in response to agiven encounter's question. The selections that make up an answer aredetermined by the question that the user is answering. After the userhas submitted their answer or answers, the answer subsystem facadecomponent 602 invokes a create user answer method 618 to create aninstance of the user answer entity 606, the user answer entity 606 beinga member of the user answer class 450 of FIG. 4. The user answer entity606 temporarily holds the answer information that was submitted by thesystem client 610. Thereafter, the answer subsystem facade component 602can invoke the add selections method 620 to populate the user answerinstance 606 with the set of selections that the user chose for thegiven question. Finally, the answer subsystem facade component 602 caninvoke the add answer to user session method 622 of the user encountermanager 604 to provide the answers that were forwarded by the systemclient 610 for the encounter to the database 630 associated with theuser encounter manager 604. Preferably, the add answer to user sessionmethod 622 extracts the attributes from the user answer instance 606 andcreates an entry in the user answer table of the database 630 with theuser's session's unique identifier. If multiple sessions are a part ofthe answer, then individual entries are inserted into the user selectiontable 628 of the database 630.

FIG. 7 illustrates a question retrieval embodiment 700 that can beimplemented on the information handling system 100 of the presentinvention. As before, the user interacts with the system 700 through asystem client 710, such as a personal computer, personal digitalassistant, or some other communication device that contains anapplication which is a consumer set of questions that are configured fora given “encounter.” The system client 710 is used for displayingquestions and their possible answers to one or more users, and forforwarding the user's answers to the system 700. In this embodiment ofthe present invention, an encounter is a set of questions (such as agroup of question trees) that are logically grouped to gatherinformation for a particular purpose. Other uses of the presentinvention are possible, however.

The system client 710 interacts with an encounter facade 702, which istypically a component that functions as a facade for the system client710. The encounter facade 702 orchestrates calls to other componentswithin the system 700 (or other external systems) in order to assemblethe encounter for presentation to the system client 710. For example,the encounter facade 702 can interact with the encounter manager 704,the question manager 706, and the selection manager 708 as illustratedin FIG. 7.

Various properties and methods are available to the components 702, 704,706, and 708 that facilitate the implementation of the presentinvention. For example, the encounter manager 704 is a component thatuses the tree roots table 728 of the database 730 in order to assembleall of the question identifiers that serve as root nodes of a specificencounter. The question manager 706 is a component that utilizes thequestion nodes table 732 and the parent-child link tables 734 along withthe selection manager 708 to assemble all of the questions andcorresponding selections that are nodes under a given root node. Theselection manager 708 is a component that, upon receiving a questionidentifier, uses a question answers map to return all of the selectionsthat are configured for the question that is represented by the questionidentifier. The above-identified components and entities can beassembled, for example, by use of the tree roots entity 210 (for thegiven root node) and nodes entities 220 that have links 225 to theparent-child link table 230 as illustrated in FIG. 2. Similarly, thequestion answer map used by the selection manager 708 can be derivedfrom the question-answer map entity 340 of FIG. 3. Moreover, constituentelements of FIG. 7 as described above can be used in conjunction withthe constituent elements of FIG. 6 as illustrated in FIG. 4 to form acomplete question/answer system.

Inter-component messages can be exchanged between components asillustrated in FIG. 7. For example, the system client 710 generates apresent encounter signals 712 to the encounter facade 702 to request theset of questions and selections that are associated with a given(desired) encounter. Similarly, a signal can be issued to invoke a gettree root for encounter method 714 that causes the encounter manager 704to query the tree roots table 728 of the database 730 to find all of theroot nodes that are configured for a given encounter. The identities ofthe root nodes are then conveyed 716 to the calling component, which inthis embodiment is the encounter facade 702. The encounter facade 702can also issue a signal to invoke the get all questions in a tree method718 that is called in order to receive all of the questions nodes in atree from a given node on down the tree. The child of the given node isfound from the parent-child link table 734 by querying the table for allof the child identifiers with a given parent identifier. Once a childidentifier is found, then the question node that is associated with thechild identifier can be found from the question nodes table 736 of thedatabase 730. The get all questions in tree method 718 can also be usedby the encounter manager to retrieve all of the questions for anencounter when given the encounter's set of root nodes. Yet anothermethod, get selections for question 720 can be issued to the selectionmanager 708 as illustrated in FIG. 7. Typically, the get selections forquestion method 720 uses the question identifier to find the associatedentries in the question answer map table 736 of the database 730. Theentries that are found in the question answer map table 736 determinethe selection types (see, e.g., selection types 502, 504 and 506 of FIG.5) and selection identifiers (Selection_ID) of possible answers for thequestions. The selection type determines which selection type table 736to use and the selection identifier uniquely identifies an entry in theselection type table 736 to return. The returned value 722 is sent backto the requesting component, which in this embodiment is the questionmanager 706. The question manager 706 then uses the returned value 722to formulate its response 724 to the encounter facade 702, which, inturn, formulates the response 726 to the system client 710.

It will be understood by those skilled in the art that alternatearrangements and/or combinations of components, entities, objects,methods and properties can be made to provide the same functionalitydescribed above with equivalent effect. Similarly, the constituentelements that provide the functionality described herein can beimplemented in hardware as well as software, or any combination ofhardware and software. The embodiments described above are illustrative,and are not intended to indicate the only possible arrangement ofconstituent elements. Instead, the above-described embodimentsillustrate the capabilities needed to accomplish the solution to theproblem.

The invention, therefor, is well adapted to carry out the objects and toattain the ends and advantages mentioned, as well as others inherenttherein. While the invention has been depicted, described and is definedby reference to exemplary embodiments of the invention, such referencesdo not imply a limitation on the invention, and no such limitation is tobe inferred. The invention is capable of considerable modification,alternation and equivalents in form and function, as will occur to thoseordinarily skilled in the pertinent arts and having the benefit of thisdisclosure. The depicted and described embodiments of the invention areexemplary only, and are not exhaustive of the scope of the invention.Consequently, the invention is to be limited only by the spirit andscope of the appended claims, giving full cognizance to equivalents inall respects.

1. A data storage apparatus implemented on an information handlingsystem comprising: one or more nodes entities; one or more tree rootsentities that reference said nodes entities; and one or moreparent-child link entities linked to said nodes entities; wherein saidentities store a set of information, said set of information havingelements related to other elements within said set.
 2. The apparatus ofclaim 1, wherein said nodes object has one or more attributes.
 3. Theapparatus of claim 1, wherein said tree roots object has one or moreattributes.
 4. A data storage apparatus implemented on an informationhandling system comprising: one or more question nodes entities; one ormore tree roots entities that reference said question nodes entities;one or more parent-child link entities linked to said nodes entities;and one or more question answer entities that map with said questionnodes object; wherein said entities store a set of information, said setof information having elements related to other elements within saidset.
 5. The apparatus of claim 4, wherein said question nodes object hasone or more attributes.
 6. The apparatus of claim 4, wherein said treeroots object has one or more attributes.
 7. The apparatus of claim 4,wherein said question-answer map object as a selection-type property. 8.The apparatus of claim 4, wherein said question-answer map objectreferences a unique question nodes object.
 9. The apparatus of claim 4,wherein said question-answer map has a selection identifier.
 10. Theapparatus of claim 4, wherein each of said question nodes entities has aunique identifier.
 11. The apparatus of claim 4, wherein each of saidtree roots entities has a unique identifier.
 12. A data storageapparatus implemented on an information handling system comprising: oneor more question nodes entities; one or more tree roots entities thatreference said question nodes entities; one or more parent-child linkentities linked to said nodes entities; one or more question answerentities that map with said question nodes object; and one or more useranswer entities associated with said question nodes object; wherein saidentities store a set of information, said set of information havingelements related to other elements within said set.
 13. The apparatus ofclaim 12, further comprising: one or more user selection entitiesassociated with one or more of said user answer entities.
 14. Theapparatus of claim 12, further comprising: one or more user encounterentities associated with one or more of said user answer entities. 15.The apparatus of claim 12, wherein said question nodes object has one ormore attributes.
 16. The apparatus of claim 12, wherein said tree rootsobject has one or more attributes.
 17. The apparatus of claim 12,wherein said question-answer map object as a selection-type property.18. The apparatus of claim 12, wherein said question-answer map objectreferences a unique question nodes object.
 19. The apparatus of claim12, wherein said question-answer map has a selection identifier.
 20. Theapparatus of claim 12, wherein each of said question nodes entities hasa unique identifier.
 21. The apparatus of claim 12, wherein each of saidtree roots entities has a unique identifier.
 22. The apparatus of claim12, wherein said user answer object has one or more attributes.
 23. Theapparatus of claim 12, wherein said user answer object has a uniqueidentifier.
 24. The apparatus of claim 14, wherein said user encounterobject has a unique identifier.
 25. The apparatus of claim 24, whereinsaid user answer object references a user encounter object by saidunique identifier of said user encounter object.
 26. The apparatus ofclaim 14, wherein said user encounter object has one or more attributes.27. The apparatus of claim 13, wherein said user selection object has aunique identifier.
 28. The apparatus of claim 13, wherein said userselection object has a selection-type attribute.
 29. A method forsubmitting answers on an information handling system comprising:registering a user on said information handling system; creating asession for said user; submitting an answer by said user; creating auser answer instance for said answer; adding one or more selections topopulate said user answer instance with said selections; and adding saidanswer submitted by said user with said user answer instance into adatabase that is operative with said information handling system;whereby said answer submitted by said user is made persistent withinsaid database.
 30. A method for retrieving a question from aninformation handling system comprising: signaling said informationhandling system to return a set of one or more questions and one or moreselections; querying a tree roots table of a database to obtain one ormore tree roots for an encounter, said database being operative withsaid information handling system; retrieving one or more question nodesassociated with said tree roots; and retrieving one or more selectionsassociated with said one or more question nodes; wherein said user isprovided with one or more questions and one or more selections for eachof said questions.
 31. A system for submitting answers on an informationhandling system comprising: means for registering a user on saidinformation handling system; means for creating a session for said user;means for submitting an answer by said user; means for creating a useranswer instance for said answer; means for adding one or more selectionsto populate said user answer instance with said selections; and meansfor adding said answer submitted by said user with said user answerinstance into a database that is operative with said informationhandling system; whereby said answer submitted by said user is madepersistent within said database.
 32. A system for retrieving a questionfrom an information handling system comprising: means for signaling saidinformation handling system to return a set of one or more questions andone or more selections; means for querying a tree roots table of adatabase to obtain one or more tree roots for an encounter, saiddatabase being operative with said information handling system; meansfor retrieving one or more question nodes associated with said treeroots; and means for retrieving one or more selections associated withsaid one or more question nodes; wherein said user is provided with oneor more questions and one or more selections for each of said questions.